/**
 * 数据配置
 */
package com.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;

import javax.sql.DataSource;

/**
 * @Configuration：用于标注配置类
 */
@Configuration
public class DataConfig {
    @Value("${spring.datasource.username}")
    private String user;
    @Value("${spring.datasource.password}")
    private String pass;
    @Value("${spring.datasource.url}")
    private String url;
    @Value("${spring.datasource.driverClassName}")
    private String driverClassName;

    /**
     * Bean：创建并命名数据源
     * name：指定数据源的名称
     */
    @Bean(name = "data_pgsql")
    public DataSource dataSource() {
        return getDruidDataSource(user, pass, url, driverClassName);
    }

    /**
     * 获取Druid数据源
     * @param name：数据库用户名
     * @param password：数据库密码
     * @param url：数据库连接地址
     * @param driver：数据库驱动类名
     * @return Druid数据源对象
     */
    private DruidDataSource getDruidDataSource(String name, String password, String url, String driver){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(driver);
        druidDataSource.setUrl(url);
        druidDataSource.setUsername(name);
        druidDataSource.setPassword(password);
        return druidDataSource;
    }

    /**
     * Bean：创建并获取JdbcTemplate对象
     * Qualifier：按名称获取指定的Bean对象
     */
    @Bean(name = "jdbc_pgsql")
    public JdbcTemplate getJdbcTemplate(@Qualifier("data_pgsql") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

}
